home *** CD-ROM | disk | FTP | other *** search
- * ziwa.s
- * じわじわ / 最高速 = 3
- * by Mitsuky
-
-
- SPEED_MAX equ 3
-
- .offset 8 * 引き数
- _source_ptr: .ds.l 1
- _dest_ptr: .ds.l 1
- _speed: .ds.l 1
- _vdisp: .ds.l 1
-
-
-
- gpos .macro pos_x,pos_y
- .dc.w (pos_y*1024)+(pos_x*2)
- .endm
-
-
- .text
- .even
-
- .dc.b 'WL10',$0d,$0a
- .dc.b 'じわじわ / 最高速 = 3',$0d,$0a
- .dc.b ' by Mitsuky',$0d,$0a
- .dc.b $1a
- .even
-
- ziwa:
- link a6,#0
- movem.l d1-d7/a0-a5,-(sp)
-
- move.l _speed(a6),d0
- bmi ziwa_ask_speed
- cmpi.l #SPEED_MAX,d0
- bhi ziwa_err
-
- tst.l _vdisp(a6)
- bmi ziwa_ask_vdisp
-
-
- moveq.l #SPEED_MAX,d3
- sub.w d0,d3 * d3.w = vdisp 待ち回数-1
-
- movea.l _source_ptr(a6),a2 * a2.l = 転送元アドレス・その1
- movea.l _dest_ptr(a6),a3 * a3.l = 転送先アドレス・その1
- lea.l table(pc),a4 * a4.l = テーブル
-
- moveq.l #64-1,d7 * d7.w = ループ回数-1
- ziwa_loop:
- move.w d3,d0
- @@: bsr vdisp
- dbra d0,@b
-
- movea.l a2,a0
- movea.l a3,a1
-
- moveq.l #64-1,d5
- ziwa_loop_y2:
- moveq.l #64/32-1,d4
- ziwa_loop_x2:
- move.w (a0),(a1)
- move.w 16*1(a0),16*1(a1)
- move.w 16*2(a0),16*2(a1)
- move.w 16*3(a0),16*3(a1)
- move.w 16*4(a0),16*4(a1)
- move.w 16*5(a0),16*5(a1)
- move.w 16*6(a0),16*6(a1)
- move.w 16*7(a0),16*7(a1)
- move.w 16*8(a0),16*8(a1)
- move.w 16*9(a0),16*9(a1)
- move.w 16*10(a0),16*10(a1)
- move.w 16*11(a0),16*11(a1)
- move.w 16*12(a0),16*12(a1)
- move.w 16*13(a0),16*13(a1)
- move.w 16*14(a0),16*14(a1)
- move.w 16*15(a0),16*15(a1)
- move.w 16*16(a0),16*16(a1)
- move.w 16*17(a0),16*17(a1)
- move.w 16*18(a0),16*18(a1)
- move.w 16*19(a0),16*19(a1)
- move.w 16*20(a0),16*20(a1)
- move.w 16*21(a0),16*21(a1)
- move.w 16*22(a0),16*22(a1)
- move.w 16*23(a0),16*23(a1)
- move.w 16*24(a0),16*24(a1)
- move.w 16*25(a0),16*25(a1)
- move.w 16*26(a0),16*26(a1)
- move.w 16*27(a0),16*27(a1)
- move.w 16*28(a0),16*28(a1)
- move.w 16*29(a0),16*29(a1)
- move.w 16*30(a0),16*30(a1)
- move.w 16*31(a0),16*31(a1)
- lea.l 16*32(a0),a0
- lea.l 16*32(a1),a1
- dbra d4,ziwa_loop_x2
-
- lea.l 7*512*2(a0),a0
- lea.l 7*512*2(a1),a1
- dbra d5,ziwa_loop_y2
-
- adda.w (a4),a2
- adda.w (a4)+,a3
- dbra d7,ziwa_loop
-
- moveq.l #0,d0
- ziwa_rts:
- movem.l (sp)+,d1-d7/a0-a5
- unlk a6
- rts
-
-
- **** ****
- vdisp:
- movem.l a0,-(sp)
- move.l _vdisp(a6),a0
- jsr (a0)
- movem.l (sp)+,a0
- rts
-
-
- **** ****
- ziwa_err:
- moveq.l #-1,d0
- bra ziwa_rts
-
-
- **** ****
- ziwa_ask_speed:
- moveq.l #SPEED_MAX,d0
- bra ziwa_rts
-
-
- **** ****
- ziwa_ask_vdisp:
- move.l _speed(a6),d0
- lea.l ask_vdisp_table(pc),a0
- add.w d0,d0
- move.w (a0,d0.w),d0
- bra ziwa_rts
-
- ask_vdisp_table:
- .dc.w 256,192,128,64
-
-
- *********************************************************
- table:
- gpos 4,4
- gpos -2,2
- gpos 3,-5
- gpos 2,2
- gpos -5,-1
- gpos 4,4
- gpos -3,1
- gpos 4,-6
- gpos -7,3
- gpos 7,3
- gpos -3,-5
- gpos -3,3
- gpos 5,-5
- gpos -3,3
- gpos 2,4
- gpos 1,-5
- gpos -4,-2
- gpos 1,5
- gpos 3,-1
- gpos -3,-3
- gpos 4,4
- gpos -6,-2
- gpos 3,3
- gpos 1,-3
- gpos -1,-3
- gpos -4,2
- gpos 1,5
- gpos 4,-2
- gpos -4,-4
- gpos -1,5
- gpos 2,-2
-
- gpos -1,-4
-
- gpos 4,4
- gpos -2,2
- gpos 3,-5
- gpos -6,2
- gpos 3,-1
- gpos 4,4
- gpos -3,1
- gpos -4,-6
- gpos 1,3
- gpos -1,3
- gpos 5,-5
- gpos -3,3
- gpos 5,-5
- gpos -3,3
- gpos 2,4
- gpos 1,-5
- gpos -4,-2
- gpos 1,5
- gpos 3,-1
- gpos -3,-3
- gpos -4,4
- gpos 2,-2
- gpos 3,3
- gpos 1,-3
- gpos -1,-3
- gpos -4,2
- gpos 1,5
- gpos 4,-2
- gpos -4,-4
- gpos -1,5
- gpos 2,-2
-
-
- * 00..17..25..13..
- * ..29..20..03..08
- * 26..05..11..16..
- * ..22..14..24..04
- * 09..31..01..19..
- * ..12..18..28..21
- * 30..02..23..06..
- * ..27..07..15..10
-
- * ..00..17..25..13
- * 08..29..20..03..
- * ..26..05..11..16
- * 04..22..14..24..
- * ..09..31..01..19
- * 21..12..18..28..
- * ..30..02..23..06
- * 10..27..07..15..
-
-